package com.young.ums.service;

import com.young.common.util.Page;
import com.young.ums.model.Dept;
import java.util.List;

/**
* 组织机构信息服务接口
* Created by imrookie on 2018-9-24.
*/
public interface IDeptService {

    /**
    * 查询
    * @param obj
    * @return
    */
    List<Dept> getList(Dept obj);

    /**
     * 单位树查询(只返回树中使用的字段,解决数据量大的情况下性能问题)
     * @param obj
     * @return
     */
    List<Dept> getListAsTree(Dept obj);

    /**
    * 分页查询
    * @param obj
    * @param page
    * @return
    */
    List<Dept> getPage(Dept obj, Page page);

    /**
    * 查询单条
    * @param id
    * @return
    */
    Dept get(String id);

    /**
     * 根据单位id查询上级单位
     * @param companyId 单位id
     * @return
     */
    Dept getParentCompany(String companyId);

    /**
     * 根据单位id查询所有的上级单位,一条链查到根
     * @param companyId 单位id
     * @return
     */
    List<Dept> getAllParentCompany(String companyId);

    /**
    * 统计数量
    * @param obj
    * @return Integer 满足xx条件的数据有多少条
    */
    int count(Dept obj);

    /**
    * 修改,字段信息必须完整
    * @param obj
    * @return
    */
    int update(Dept obj);

    /**
    * 删除
    * @param id
    * @return
    */
    int delete(String id);

    /**
    * 批量删除
    * @param idArr
    * @return
    */
    int delete(String[] idArr);

    /**
    * 插入
    * @param obj
    * @return
    */
    int insert(Dept obj);

    /**
    * 批量插入
    * @param list
    * @return
    */
    int batchInsert(List<Dept> list);


    /**
     * 获取儿子节点(不含孙子)
     * @param deptId 机构id
     * @return
     */
    List<Dept> getChildList(String deptId);

    /**
     * 根据机构id数组查询机构列表
     * @param deptIds 机构id数组
     * @return
     */
    List<Dept> getListByIds(String[] deptIds);
}